package View;

import controleur.AbstractChatControleur;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.*;
import javax.swing.*;


/**
 *
 * @author matthieu
 */
public class NewUserFrame
{
    JFrame frame = new JFrame();
    Dimension size = new Dimension(350, 100);
    AbstractChatControleur controleur;
    JTextField ChampUser;
    boolean origineManageUserFrame = false;
    ManageUserFrame manageuserframe;
    
    /**
    *<b>Constructeur NewUserFrame</b>
    * @param controleur
    */
    public NewUserFrame(AbstractChatControleur controleur)
    {
        this.controleur = controleur;
        System.out.println("Objet FenetreNouvelUtilisateur");
        controleur.hideManagerUserFrame();
        buildFrame(controleur);
    }
    
    public NewUserFrame(AbstractChatControleur controleur, ManageUserFrame m)
    {
        m.frame.setVisible(false);
        this.manageuserframe = m;
        origineManageUserFrame = true; // utilise dans fin()
        
        this.controleur = controleur;
        System.out.println("Objet FenetreNouvelUtilisateur");
        buildFrame(controleur);
    }
    
    
    /**
    *<b>Methode buildFrame</b>
    * Cree la frame
    * @param controleur
    */
    private void buildFrame(AbstractChatControleur controleur){

        frame.setTitle("Creation d'une nouvel utilisateur");
        
        frame.add(buildPanel());
        frame.setPreferredSize(size);
        frame.setResizable(false);
        frame.setSize(size);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        
	frame.pack();
        
        this.displayFrame();
    }
    
    /**
    *<b>Methode displayFrame</b>
    * Affiche la fenetre
    * @param controleur
    */
    public void displayFrame(){
        frame.setVisible(true);
    }
    
    /**
    *<b>Methode displayFrame</b>
    * Massque la fenetre
    * @param controleur
    */
    public void hideFrame(){
        frame.setVisible(false);
    }
    
    public JPanel buildPanel()
    {
        JPanel mainPanel = new JPanel(new GridBagLayout());
        GridBagConstraints allignement = new GridBagConstraints();
                
        //mainPanel.addAncestorListener(new NewConnectionFrameListener(this));
        JLabel TexteAdresse = new JLabel("Nom de l'utilisateur : ");
        ChampUser = new  JTextField(20);
        ChampUser.setMinimumSize(new Dimension(160,20));
        ChampUser.addKeyListener(new KeyAdapter() {
                             @Override
                             public void keyPressed(KeyEvent key){
                                if(key.getKeyCode() == KeyEvent.VK_ENTER){
                                    controleur.addUserToList(getUser());
                                    fin();
                                    frame.dispose();
                                }
                             }
                            });
        JButton BouttonValider = new JButton("Ajouter");
        JButton BouttonAnnuler = new JButton("Annuler");
        
        ChampUser.getText();
        BouttonValider.addActionListener(new NewUserFrameListener());
        BouttonAnnuler.addActionListener(new NewUserFrameListener());
        
        BouttonValider.isDefaultButton();
        BouttonValider.setPreferredSize(new Dimension(120, 20));
        BouttonAnnuler.setPreferredSize(new Dimension(120, 20));
        
        //BouttonValider.requestFocusInWindow();
        BouttonValider.setName("BouttonValider");
        BouttonAnnuler.setName("BouttonAnnuler");
               
             
        allignement.weighty = 3;
        allignement.gridy = 0;
        mainPanel.add(TexteAdresse, allignement);
        mainPanel.add(ChampUser, allignement);
        allignement.gridy = 1;
        mainPanel.add(BouttonValider, allignement);
        mainPanel.add(BouttonAnnuler, allignement);
        
        
                
        return mainPanel;
    }
    
    /**
    *<b>Methode getUser</b>
    * Retourne le nom saisie
    * @param controleur
    */
    public String getUser()
    {
       return ChampUser.getText();
    }
    
    /**
    *<b>Methode fin</b>
    * Permet l'affichage de la fentre de gestion des utilisateurs
    * @param controleur
    */
    public void fin()
    {        
        //if ( origineManageUserFrame ) 
        {
            controleur.displayManagerUserFrame();
            //manageuserframe.frame.setVisible(true);
            //manageuserframe.updateListUser();
        }        
    }
    
    //*************************************************************************
    //****************************LISTENERS************************************
    //*************************************************************************
    private class NewUserFrameListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e){
            if (e.getSource() instanceof JButton) {
                JButton item = (JButton) e.getSource();
                if ("BouttonValider".equals(item.getName())) {
                        controleur.addUserToList(getUser());
                        fin();
                        frame.dispose();
                } else if ("BouttonAnnuler".equals(item.getName())){

                    fin();
                    frame.dispose();
                }
            }
        }
    }
}
